package api

import (
	"log"
	"time"

	"gitee.com/dingiyan/goMyAdmin/db"
	"github.com/gin-gonic/gin"
)

// 数据源管理

// 新增或修改数据源记录，在db中存储一个数据源的连接信息
func SaveDatasourcesRecord(c *gin.Context) {
	var server db.Server
	err := c.ShouldBindJSON(&server)
	if err != nil {
		log.Println(err)
		c.JSON(200, resError(1, "参数有误"))
		return
	}

	if server.CreateAt == 0 {
		server.CreateAt = time.Now().Unix()
	}

	server.UpdateAt = time.Now().Unix()

	obj, err := db.SaveOneServerRecord(&server)
	if err != nil {
		log.Println(err)
		c.JSON(200, resError(2, "添加出错"))
		return
	}
	c.JSON(200, success(obj.ID))
}

// 获取数据源持久化列表
func GetDatasourcesRecordList(c *gin.Context) {
	// dbm := dialect.GetDialect("mysql")
	servers, err := db.GetServerList()
	if err != nil {
		log.Println(err)
		c.JSON(200, resError(1, "获取出错"))
		return
	}
	c.JSON(200, success(servers))

}

// 删除一个数据源记录
func DeleteDatasourcesRecord(c *gin.Context) {
	var body map[string]any
	err := c.ShouldBindJSON(&body)
	if err != nil || body["id"] == nil {
		log.Println(err)
		c.JSON(200, resError(1, "参数有误"))
		return
	}
	err = db.DB.Where("ID = ?", body["id"]).Delete(&db.Server{}).Error
	if err != nil {
		log.Println(err)
		c.JSON(200, resError(1, "删除出错"))
		return
	}
	c.JSON(200, success(true))
}
